package com.hubei.Filter;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class LoginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 在过滤器初始化时执行，可以在这里进行一些资源的初始化操作
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
            throws ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        // 获取用户请求对象中包含的请求资源路径
        String uri = request.getRequestURI();

        // 如果请求是去登录页面，则直接放行
        if (uri.contains("login")) {
            chain.doFilter(req, resp);
        } else {
            // 获取当前会话
            HttpSession session = request.getSession(false);
            if (session == null || session.getAttribute("userInfo") == null) {
                // 会话中不存在用户信息，重定向到登录页面
                response.sendRedirect(request.getContextPath() + "/login.jsp");
            } else {
                // 用户已登录，放行请求
                chain.doFilter(req, resp);
            }
        }
    }

    @Override
    public void destroy() {
        // 在过滤器销毁时执行，可以在这里进行一些资源的清理操作
    }
}